package com.hawk.eye.server.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hawk.eye.common.page.PageQuery;
import com.hawk.eye.common.page.PageResult;
import com.hawk.eye.server.domain.dto.req.DictReqDTO;
import com.hawk.eye.server.domain.dto.req.ProblemRecordReqDTO;
import com.hawk.eye.server.domain.dto.req.RepairProblemReqDTO;
import com.hawk.eye.server.domain.dto.resp.DictDataRespDTO;
import com.hawk.eye.server.domain.dto.resp.ProblemRecordRespDTO;
import com.hawk.eye.server.domain.dto.resp.RepairProblemRespDTO;
import com.hawk.eye.server.domain.po.ProblemRecord;

import java.util.List;

/**
 * 缺陷管理 Service接口
 *
 * @author salad
 * @date 2023-09-23
 */
public interface IServiceProblemService extends IService<ProblemRecord> {
    /**
     *
     * @param pageQuery
     * @param reqDTO
     * @return
     */
    PageResult<ProblemRecordRespDTO> page(PageQuery pageQuery, ProblemRecordReqDTO reqDTO);

    /**
     *
     * @param pageQuery
     * @param reqDTO
     * @return
     */
    PageResult<RepairProblemRespDTO> repairProblemPage(PageQuery pageQuery, RepairProblemReqDTO reqDTO);

    /**
     *
     * @param reqDTO
     * @return
     */
    boolean createLogProblem(ProblemRecordReqDTO reqDTO);

    /**
     *
     * @param reqDTO
     * @return
     */
    boolean update(ProblemRecordReqDTO reqDTO);

    /**
     *
     * @param ids
     * @return
     */
    boolean activate(Long[] ids);

    /**
     *
     * @param ids
     * @return
     */
    boolean resolve(Long[] ids);

    /**
     *
     * @param ids
     * @return
     */
    boolean close(Long[] ids);

    /**
     *
     * @param id
     * @return
     */
    ProblemRecordRespDTO detail(Long id);

    /**
     *
     * @param baseAlarmId
     * @return
     */
    ProblemRecordRespDTO detailByLog(Long baseAlarmId);

    /**
     *
     * @return
     */
    List<DictDataRespDTO> problemDictList();

    /**
     *
     * @param to
     * @return
     */
    boolean saveDict(DictReqDTO to);

    /**
     *
     * @param to
     * @return
     */
    boolean updateDict(DictReqDTO to);

    /**
     *
     * @param ids
     * @return
     */
    boolean removeDict(Long[] ids);

    /**
     *
     * @param type
     * @return
     */
    List<DictDataRespDTO> dictListByType(String type);

    /**
     *
     * @param id
     * @return
     */
    List<ProblemRecord> getProblemListByRepairId(Long id);

}
